home *** CD-ROM | disk | FTP | other *** search
- 14 In_Go, der interaktive Reassembler Version 4.0 International
- 64 © Februar 1998, Ingo Molter
- 14 TESTVERSION keine Garantie, keine Gewährleistung.
- 10
- 41INSTALLATION
- 10 Das File In_Go__Structure sollte entweder im gleichen Verzeichnis
- 10 wie In_Go zu finden sein, oder ins s: Verzeichnis kopiert werden
- 10 Der Speicher im F1 Requester sollte mindestens so groß wie das
- 10 zu bearbeitetnde Quellfile sein (auch für Referenzen !).
- 41 Tips:
- 10Nach erstmaligem Laden muß die geladene Quelle reassembliert werden.
- 10 Zum fehlerfreien Reassemblieren müssen ALLE indirekten und relativen
- 10 Aufrufe erkannt sein ! Dies ist bei manchen Programmen unmöglich !
- 10Kleinere linkbaren Objectfiles können auch geladen werden, mit gewissen
- 10 Einschränkungen allerdings: In_Go unterstützt nur EINEN Labelnamen
- 10 je Adresse. Bei Objectfilecollectionen wie zum Beispiel `Amigalib`
- 10 stimmt die Hunkrelation nicht ! Auch Objectfiles müssen disassembliert
- 10 werden, ( Zeilenkursor auf Codebeginn dann Rechte Amiga +j drücken ).
- 10Den Symbolischen Prozessor können Sie Unterstützen durch die Namensgebung
- 10 von Zeigern. `Ein_Screen` wird als Zeiger auf eine Screen Struktur
- 10 interpretiert. Die Namensgebung nach dem `_` sollte sich dabei
- 40 an die Namensgebung der Strukturen im `Inhalt` Anzeiger halten.
- 10 Bei Sprüngen in der Anzeige geht der Symbolische Prozessor oft von
- 10 falschen Inhalten aus. Diese Fehler sind beim Reassemblieren unkritisch !
- 10 Die Interpretation der Basisregister wird nur durch die Bereiche
- 10 im F3 Requester festgelegt !
- 10Files, Objectfiles, Tasks, Ram und Rom können verarbeitet werden.
- 10 Die Bearbeitung erfolgt dabei vollkommen parallel zur geladenen Quelle.
- 10 Dies ermöglicht auch das Bearbeiten von laufende Tasks.
- 10Allgemein wird zwischen zwei Datenarten unterschieden:
- 10 - Code: erkannte Instruktionen des eingestellten Processors.
- 10 - Data: alles andere, auch nicht reassemblierter Code !
- 10 Beim Disassemblieren wird eine Referenzliste angelegt,
- 10 welche die Erzeugung lokaler Labeln ermöglicht.
- 10Lokale Labels unterstützen auch die Erzeugung von Amigaguide files,
- 10 Ihrer Source, die an Transparenz kaum noch zu Übertreffen sind.
- 10Nach dem Laden Option `finde typische Amiga Strings` ausführen.
- 10 Basen können auch halbautomatisch gefunden werden, jedoch
- 10 eventuell wieder deaktiviert werden (Im F3 Requester).
- 10
- 10Im `.In_Go` File werden Labeln, Bereiche, Namen usw. abgespeichert.
- 10 Durch `Save .In_Go file ` kann auch eine Art UNDO erzeugt werden.
- 10 Dann kann durch erneutes Laden der alte Zustand wiederhergestellt werden.
- 10
- 10Screengröße, Speicher, Schriftart und Farben der Hauptanzeige können
- 10 Ihren Bedürfnissen angepasst werden.
- 10
- 41Andere Fähigkeiten:
- 10
- 10Komentare kontrollieren die Ausgabe:
- 10 - `@` sendet align.l oder Synonym (¹)(³)
- 10 - `<` Schaltet Ausgabe Aus (¹)(³)
- 10 - `>` Schaltet Ausgabe Ein (¹)(³)
- 10 - `(` Schaltet alle Optimierungen Aus. (¹)(³)
- 10 - `(` Schaltet alle Optimierungen Ein. (¹)(³)
- 10 - `[` Schaltet möglicherweise fehlergenerierende Optimierung Aus (¹)(³)
- 10 - `]` Schaltet möglicherweise fehlergenerierende Optimierung Ein (¹)(³)
- 10 - `{` Schaltet Indirekt(ax) Aus (¹)(³)
- 10 - `}` Schaltet Indirekt(ax) Ein (¹)(³)
- 10 Die mit (¹) bezeichneten Optionen werden nur bei der
- 10 Ausgabe als Textfile berücksichtigt !
- 10 Die mit (³) bezeichneten Optionen müssen alleine
- 10 als Komentar stehen (1 Zeichen !).
- 10 - `~#` erzwingt die Interpretation als Library Nr.1
- 10 # Die Librarynummer ist im Reassemblerhilfsrequester sichtbar.
- 10 - `~` für sich allein, untertrückt die Libraryinterpretation;
- 10 dies ist nur in der jeweiligen Zeile wirksam.
- 10 - `[d0]=` bis `[A6]=` + Name fügt Name in den symbolischen
- 10 Processor. In der vorliegenden Version hat dies jedoch nur
- 10 auf die Interpretation von Strukturen auswirkung.
- 10
- 41Lernen:
- 10 Original Zeile vor lernen Nach dem lernen
- 10 ---------------------------------------------------------
- 10 Data Lxxx: dc.b `Name`,0 Name_T: dc.b `Name`,0
- 10 Lxxx: dc.b `Name1`,10 Name1_T: dc.b `Name`,10
- 10 Lxxx: dc.b `Name2` Name2_T: dc.b `Name`
- 10 Aufruf Lxxx: ....... yyy_I: .......
- 10 jsr _LVOyyy(A6) jsr _LVOyyy(A6)
- 10 ....... .......
- 10 rts rts
- 10Zum richtigen `lernen` von Library Aufrufen muß die Interpretation
- 10 angezeigt werden. Dazu müssen die Basen festgelegt werden.
- 10 Dazu klicken Sie in der Hauptanzeige den entsprechenden Namen.
- 10 Im Reassemblerhilfsrequester können Sie durch Klicken die Base
- 10 festlegen. Das Editieren erfolgt immer in Richtung der Scrollbox
- 10
- 10Wenn die Libraryaufrufe zwei Einsprünge besitzen, entsprechende
- 10 Option im Menü einstellen.
- 10 Lernen erfolgt nur im sichtbaren Bereich !
- 10
- 41Über das Tabellen einlesen:
- 10
- 10 Labeltype: Welcher Labeltyp soll erzeugt werden ?
- 10
- 10 `Data` Normales Label `L`
- 10 `Sprung`: Das Label wird Reassembler Startadresse. `JL`
- 10
- 10
- 41Verkettete Listen mit wechselnder Länge der Elemente:
- 10
- 10 Eine Liste in der Form : ` Kopf + Inhalt + Zusatz` kann eingelesen
- 10 werden wenn ` Kopf ` und ` Zusatz ` konstante Länge haben !
- 10 Eines der Kopf-Bytes muß die Länge des Inhalts anzeigen.
- 10 Das längeanzeigende Byte muß nicht das erste im Kopf sein
- 10 Falls notwendig kann die Länge inkrementiert (+1) werden
- 41Reassembler preferences
- 10
- 10Unterdrücke Labelerzeugung wenn:
- 10 `Pea long` pea Langgwort
- 10 `#log` # Unmittelbar and/or/eor/ (logic) Langwort
- 10 `#eff` # Unmittelbar in effectiven Adressen
- 10 `Long` alle Langwortlabel
- 10Beim Einlesen von Files werden alle Langwortaufrufe erkannt.
- 10 Bei Tasks existieren ja keine Reloctabellen ! Um nun das Einlesen von
- 10 zufällig in die Segmente zeigenden Vectoren zu unterbinden, kann mit
- 10 Hilfe dieser Schalter eine Labelcreation verhindert werden.
- 10Indirekte Adressierung:
- 10 Bei Speicherzugriffen in der Form `Word(Ax)` kann auch dieser
- 10 Zugriff erkannt werden wenn die Basis eine Konstannte innerhalb
- 10 der Segmente ist. Dabei kann auch noch ein Word dazu addiert
- 10 werden. Meist ist nur ein gefundener Wert richtig.
- 10 Bei `C` Programmen A4 eventuell + $7ffe wenn außerhalb Segment
- 10Pseudo Adressierung :
- 10 Auf Stackbereiche oder dynamische Speicherbereiche wird oft
- 10 ebenfalls in der Form `Word(Ax)` zugegriffen
- 10 Da diese Bereiche jedoch außerhalb der Segmente liegen
- 10 können Pseudobereiche angelegt werden, welche dann dennoch eine
- 10 Labelcreation zulassen. Sprünge werden nicht unterstützt.
- 10 Typisch für diese Form der Adressierung sind Link/Unlink Module
- 10 die Ihre lokalen Variablen auf dem Stack anlegen.
- 10 Das Finden solcher Bereiche erfolgt weitgehend automatisch
- 10 nach Anklicken der Option finde Link Bereiche
- 41Optimierungen 68000 -> 68020 im Quelltext
- 10- ext.b gefolgt von ext.w wird zu extb,l : Spart 2 Byte
- 10- Jsr/jmp wird zu Bsr.l/Jsr.l : Spart den Reloc_32 Eintrag also 4 Byte
- 10- asl.x (1,2,3),Dx oder add Dx,Dx gefolgt von einem Zugriff in
- 10 der Form bb(Ay,Dx) wird zu (bb,Ay,Dx*sk). Wird später nochmal
- 10 auf Dx zugegriffen generiert diese Optimierung Fehler (¹).
- 10- move X,Y gefolgt von move (Y),Z oder move Z,(Y) wird zu
- 10 move ([X]),Z oder move Z,([X]). Wird später auf Y zugegriffen
- 10 generiert diese Optimierung Fehler (¹).
- 10 Die mit (¹) versehenen Optimierungen können im erzeugte File (!)
- 10 durch Komentare Ein- oder Ausgeschaltet werden.
- 41 Optimierungungen mit Hilfe von Macros
- 10 Gängige Befehlsequenzen werden durch Macros ersetzt.
- 10 Stackoperationen können zusammengefaßt werden.
- 10 Dies kann auch die Übersichtlichkeit erhöhen !.
- 10
- 41 Interruptlabel
- 10 Unterprogramme die mit jsr/bsr Label aufgerufen werden und ihre
- 10 Returnadresse vom Stack entfernen erzeugen Fehler beim reassemblieren.
- 10 Dann ist eine Reassemblierung HINTER jsr/bsr Label wenig sinnvoll.
- 10 Im Edit Menü kann ein Label zum Interruptlabel umgeformt werden.
- 10 Die Reassemblierung wird dann NICHT hinter jsr/bsr Label fortgeführt.
- 10 Das Label muß dabei in der Aktuellen Zeile stehen ( LABEL: ) !
- 10
- 41Status in der Hauptanzeige:
- 41
- 10 B : Code-Bereiche L : Label
- 10 N : Eigene Namen Z : Code Zeilen
- 10 J : Jumptabellen C: Komentare
- 10 l : Langwortkonstannten S: Script Zeilen
- 10 X : Referenzen
- 41
- 41Wichtige Eingabe Befehle
- 41
- 10 `d` Umschalten zwischen Data als Code oder als Data
- 10 `p` Umschalten zwischen den verschiedenen Adressanzeigen
- 10 `a` Anzeige ab Label mit zwei Möglichkeiten:
- 10 - Namen Sortiert nach ASCII
- 10 - Label oder Namen nach absoluten Adressen
- 10 `r` Anzeige ab Referenz Zeilenlabel Aktuellen Zeile:
- 10 Alle Sprung Referenzen stehen zur Auswahl
- 10 `t` Aufruf des Tabellen Requesters, dabei wird die Adresse
- 10 der aktuellen Zeile übergeben.
- 10 `o` Umschalten von Optimierung Ein/Aus in der Anzeige
- 10 `esc` verlassen von allen Requestern.
- 10 `Space` Startet den Reassembler .
- 10 Durch Anklicken lassen sich im Laderequester die Segmente definieren.
- 10 Dies ist insbesondere bei Tasks notwendig !.
- 41
- 41Fehlersuche & In_Go
- 41
- 10In_Go bietet:
- 10
- 10 - Alle Segmente (Hunks) sichtbar.
- 10 - Ausführbare Programme können mit Labelnamen versehen werden.
- 10 - Adresslage farbmarkiert im `Inhalte` requester
- 10 - Reloc_32 Adressen haben ein `A` im erzeugten Namen.
- 10 - Findet selbstmodifizierenden Code
- 10 - Entdeckt nicht erlaubte Instruktionen je nach (Ko) Processor.
- 10 - Automatisches Tabelleneinlesen der gebräuchlichsten Tabellen.
- 10 - Einlesen von verketteten Listen mit unterschiedlicher Teillänge.
- 10 - Dekodierung indirekter Adressierungen via A3-A6 .
- 10 - Optimierungen 68000 --> 68020 möglich.
- 10 - Kann Macros für Entscheidungen (tst,cmp) erzeugen.
- 10 - Kann Macros für Procedureanfang und -ende erzeugen.
- 10 - Kann Macros für mehrfache Stackoperationen erzeugen.
- 10 - Viele typische Amiga Konstanten implementiert.
- 10 - Indirekt-indirekte Interpretation von Zeiger auf Langworte und Rts
- 10 - Pseudolabeln für lokale Variable.
- 10 - Primitiver symbolischer Processor implementiert.
- 10 - Kann ein Amiga-Guide-File Ihrer Quelle erzeugen, welches an
- 10 Transparenz kaum noch zu übertreffen ist !
- 10 - Kann ©Enforcer-Hits mit ©Segtracker lokalisieren.
- 10 - Kann linkbare Objectfiles editieren und dissasemblieren.
- 10 - Kann alle Referenzen auf Zeilenadresse anzeigen.
- 10 Updates: Sende DM 10.- oder 10 Dollar an
- 10 Ingo Molter
- 10 Dunzweilerstr.42,
- 10 D-66903 Dittweiler (Germany)
- 10 Tel. 06386 1312
- 10Senden Sie auch Berichte usw. ich mag viel Post!
- 01 Vielen Dank an:
- 01 Mathias Schroeder, Berlin
- 01 Martin Apel (Bonn, K`lautern), Author des Adis Reassemblers
- 01 Karl Roesel (K`lautern).
-
-